package tema13.ej5Ventanas;

import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.Toolkit;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;

public class Ventanas extends JFrame {
	private String titulo = "Ventana";
	private final int alto = 200;
	private final int ancho = 200;
	private int x, y, anchoEscritorio, altoEscritorio, x1, y1;
	private static int numVentanas;
	private static final Random r = new Random();
	private static Ventanas[] v;
	private static InputStreamReader isr = new InputStreamReader(System.in);
	private static BufferedReader br = new BufferedReader(isr);
	private JLabel jl;

	private void inicializarComponentes() {
		jl = new JLabel();
		jl.setFont(new Font("Arial", Font.BOLD, 35));
		this.add(jl);
	}

	private void cambiarEje() {
		if (r.nextInt(2) == 0) {
			x1 = 1 * numVentanas;
		} else {
			x1 = -1 * numVentanas;
		}
		if (r.nextInt(2) == 0) {
			y1 = 1 * numVentanas;
		} else {
			y1 = -1 * numVentanas;
		}
	}

	private void esperar() {
		for (int i = 0; i < 10000; i++) {
			System.out.print("");
		}
	}

	public Ventanas() {
		inicializar();
		inicializarComponentes();
	}

	private void inicializar() {
		setTitle(titulo);
		setSize(ancho, alto);
		inicializarUbicacion();
		setVisible(true);

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// JLabel.setIcon(new ImageIcon(getClass().getResource("foto.jpg")));
	}

	private void inicializarUbicacion() {
		altoEscritorio = Toolkit.getDefaultToolkit().getScreenSize().height;
		anchoEscritorio = Toolkit.getDefaultToolkit().getScreenSize().width;
		// y = (altoEscritorio / 2) - (alto / 2);
		// x = (anchoEscritorio / 2) - (ancho / 2);
		x = r.nextInt(anchoEscritorio);
		y = r.nextInt(altoEscritorio);
	}

	private void comprobar() {
		if (x <= 0) {
			x = 0;
			x1 = 1 * numVentanas;
		}
		if (y <= 0) {
			y = 0;
			y1 = 1 * numVentanas;
		}
		if (x >= (anchoEscritorio - ancho)) {
			x = (anchoEscritorio - ancho) - 1;
			x1 = -1 * numVentanas;
		}
		if (y >= (altoEscritorio - alto)) {
			y = (altoEscritorio - alto) - 1;
			y1 = -1 * numVentanas;
		}
	}

	private static void rotar(int num) {
		for (int i = 0; i < num; i++) {
			v[i].esperar();
			v[i].jl.setText(v[i].x + " " + v[i].y);
			v[i].x += (v[i].x1);
			v[i].y += (v[i].y1);
			v[i].comprobar();
			v[i].setLocation(v[i].x, v[i].y);
		}
	}

	public static void introducirNumeroVentanas() {
		System.out.print("Introduce numero de ventanas: ");
		try {
			numVentanas = Integer.parseInt(br.readLine());
		} catch (Exception e) {
			introducirNumeroVentanas();
		}
	}

	public static void main(String[] args) throws Exception {
		introducirNumeroVentanas();
		if (numVentanas > 0) {
			v = new Ventanas[numVentanas];

			for (int i = 0; i < numVentanas; i++) {
				v[i] = new Ventanas();
			}

			// primera vuelta
			for (int i = 0; i < numVentanas; i++) {
				v[i].cambiarEje();
			}

			while (true) {
				Ventanas.rotar(numVentanas);
			}

		} else {
			System.out.println("FIN");
		}
	}
}
